#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
修复中文文件名问题的工具
"""

import os
import shutil
import sys
from pathlib import Path

def fix_chinese_filenames():
    """修复中文文件名问题"""
    desktop_path = Path("C:/Users/Administrator/Desktop")
    
    print("正在检查桌面上的图像文件...")
    
    # 查找所有图像文件
    image_files = []
    for ext in ['.jpg', '.jpeg', '.png', '.bmp']:
        image_files.extend(desktop_path.glob(f"*{ext}"))
        image_files.extend(desktop_path.glob(f"*{ext.upper()}"))
    
    print(f"找到 {len(image_files)} 个图像文件")
    
    # 创建新的文件名映射
    new_names = {}
    
    for i, file_path in enumerate(image_files, 1):
        old_name = file_path.name
        new_name = f"keyboard_image_{i:02d}.jpg"
        
        # 如果文件不是JPG，转换为JPG
        if not old_name.lower().endswith('.jpg'):
            new_name = f"keyboard_image_{i:02d}.jpg"
        
        new_path = desktop_path / new_name
        new_names[old_name] = new_name
        
        print(f"重命名: {old_name} -> {new_name}")
        
        # 复制文件到新名称
        try:
            shutil.copy2(file_path, new_path)
            print(f"✅ 成功创建: {new_name}")
        except Exception as e:
            print(f"❌ 失败: {e}")
    
    return new_names

def create_usage_guide():
    """创建使用指南"""
    guide = """
# 中文文件名修复指南

## 问题原因
Windows系统在处理中文文件名时可能存在编码问题，导致OpenCV无法正确读取文件路径。

## 解决方案
1. 使用英文文件名
2. 避免特殊字符和空格
3. 使用标准图像格式

## 推荐的文件命名规则
- 使用英文字母和数字
- 避免中文字符
- 使用下划线代替空格
- 保持文件名简短

## 示例
❌ 错误: 健盘0306_41.jpg
✅ 正确: keyboard_01.jpg

❌ 错误: 商品深度相机952_534_43.jpg  
✅ 正确: camera_02.jpg
"""
    
    with open("keyboard_inspector/文件名修复指南.md", "w", encoding="utf-8") as f:
        f.write(guide)
    
    print("已创建文件名修复指南: keyboard_inspector/文件名修复指南.md")

if __name__ == "__main__":
    print("=" * 50)
    print("中文文件名修复工具")
    print("=" * 50)
    
    # 修复文件名
    new_names = fix_chinese_filenames()
    
    # 创建使用指南
    create_usage_guide()
    
    print("\n" + "=" * 50)
    print("修复完成！")
    print("现在你可以使用新的英文文件名来加载图像")
    print("=" * 50)
